
-record(region, {
            left :: float(),top :: float(), right :: float(), bottom :: float()
        }).

-type face() :: 'undefined' | {float(), float()}.

-type bearing() :: 'undefined' | 0..11.

-record(topological_region, {
            region,
            inlet :: bearing(), outlet :: bearing(),
            interface :: face(), outerface :: face(), 
            square_flag = true
        }).

-type topo_region() :: #topological_region{}.

-record(region_state, {
                id,
                pred,
                self,
                succ,
                topological_region,
                traverse_version = 0
        }).

